package tfts

// 饮血剑
func (f *Fight) Sword() *Fight {
	f.Adds(AD(15), AP(15), AR(10), OMP(20))
	a := NewAction(f)
	a.name = "Bloodthirster"
	a.Once(10).On(TimeGoE)
	a.Shield = "25*hp"
	return f
}

// 科技枪
func (f *Fight) GunBlade() *Fight {
	f.Adds(AD(20), AP(20), OMP(15), Regen(1))
	f.EndTime += 2 // 科技枪延长战斗时间
	return f
}

// 正义
func (f *Fight) Justice() *Fight {
	f.Adds(CritRate(20), AP(22), AD(22), OMP(18), Regen(1))
	return f
}

// 法爆
func (f *Fight) Jeweled() *Fight {
	if f.skillCrit() {
		f.Add(CritAmp(10))
	}
	f.Adds(AP(35), CritRate(35), Critable())
	return f
}

// 无尽
func (f *Fight) Infinity() *Fight {
	if f.skillCrit() {
		f.Add(CritAmp(10))
	}
	f.Adds(AD(35), CritRate(35), Critable())
	return f
}

func (f *Fight) Whisper() *Fight {
	f.Adds(AD(15), AS(20), CritRate(20))
	return f
}

// 破防
func (f *Fight) Breaker() *Fight {
	f.Adds(AS(10), CritRate(20), AMP(5), HP(150))
	a := NewAction(f, AMP(5)).Stack(1, 4).On(CriticalE)
	a.name = "Breaker"
	return f
}

// 羊刀
func (f *Fight) Guinsoo() *Fight {
	f.Adds(AP(10), AS(10))
	a := NewAction(f, AS(7))
	a.Stack(1).On(TimeGoE)
	a.name = "Guinsoo"
	return f
}

// 青龙刀
func (f *Fight) Shojin() *Fight {
	f.Add(HitMana(5))
	f.Add(AD(15))
	f.Add(AP(10))
	f.Add(Regen(1))
	return f
}

func (f *Fight) Blue() *Fight {
	f.Adds(AD(15), AP(15), Regen(5), AdAmp(10), ApAmp(10))
	return f
}

// 头盔
func (f *Fight) Helm() *Fight {
	f.Add(ManaAmp(15))
	f.Add(Regen(2))
	f.Adds(AD(15), AP(15))
	return f
}

// 巨杀
func (f *Fight) Giant() *Fight {
	// 15增伤的数学期望取10
	f.Adds(AD(20), AP(20), AS(15), AMP(25))
	return f
}

// 海妖
func (f *Fight) Kraken() *Fight {
	f.Add(AD(10))
	f.Add(AS(10))
	a := NewAction(f, AD(4))
	a.Stack(1, 15).On(AttackE).AddCall("KrakenProc", func(fight *Fight) {
		f.Add(AS(40))
	})
	return f
}

// 大天使
func (f *Fight) Staff() *Fight {
	f.Adds(AP(20), Regen(1))
	a := NewAction(f, AP(30)).Stack(5).On(TimeGoE)
	a.name = "Staff"
	return f
}

// 血手
func (f *Fight) Gage() *Fight {
	f.Adds(AD(40), HP(300))
	a := NewAction(f).Once(10).On(TimeGoE)
	a.Shield = "30*hp"
	a.name = "Sterak'sGage"
	return f
}

// 纳什
func (f *Fight) Nashor() *Fight {
	f.Adds(AP(15), AS(10), HP(150), CritRate(20))
	NewAction(f).On(CriticalE).AddCall("Nashor_C", func(fight *Fight) {
		fight.mana += 4 * f.manaAmp()
	})
	NewAction(f).On(AttackE).AddCall("Nashor", func(fight *Fight) {
		fight.mana += 2 * f.manaAmp()
	})
	// NewAction(f).On(BeforeCastE).buff = NewBuff(TimeGoE, 5, AS(60))
	return f
}

func (f *Fight) Red() *Fight {
	f.Adds(AS(45), AMP(6))
	return f
}

func (f *Fight) DeathBlade() *Fight {
	f.Adds(AD(55), AMP(10))
	return f
}

func (f *Fight) Cap() *Fight {
	f.Adds(AP(50), AMP(15))
	return f
}

// 水银
func (f *Fight) Silver() *Fight {
	f.Adds(AS(15), CritRate(20))
	a := NewAction(f, AS(3)).Stack(1).On(TimeGoE)
	a.name = "Silver"
	return f
}

func (f *Fight) Edge() *Fight {
	f.Adds(AD(10), AP(10))
	f.Add(AS(15))
	//NewAction(f, AS(15)).Once(10).On(TimeGoE)
	return f
}

// 泰坦
func (f *Fight) Titan() *Fight {
	f.Adds(AS(10), AR(10))
	NewAction(f, AP(2), AD(2)).Stack(1, 25).On(TimeGoE).On(AttackE).
		AddCall("TitanProc", func(f *Fight) {
			f.Adds(AMP(10))
		})
	return f
}
